﻿// <copyright file="IBubble.cs" company="Oleg V. Polikarpotchkin">
// Copyright © 2008-2009 Oleg V. Polikarpotchkin. All Right Reserved
// </copyright>
// <author>Oleg V. Polikarpotchkin</author>
// <email>ov-p@yandex.ru</email>
// <date>2009-04-24</date>
// <summary>OpenWPFChart library. IBubble interface.</summary>
// <revision>$Id$</revision>

using System.Windows;
using System.Windows.Media;

namespace OpenWPFChart.Parts
{
	/// <summary>
	/// <see cref="IBubble"/> interface.
	/// </summary>
	/// <remarks>
	/// This interface is implemented by <see cref="ItemDataView"/> derived types containing
	/// points which can be rendered with "Bubble" figures.
	/// <para>Note the difference with <see cref="IPointMarker"/> interface.</para>
	/// </remarks>
	public interface IBubble
	{
		/// <summary>
		/// Gets or sets the ZScale property.
		/// </summary>
		ChartScale ZScale { get; set; }

		/// <summary>
		/// Gets or sets the Bubble Drawing.
		/// </summary>
		/// <value>Any <see cref="Drawing"/> or null.</value>
		Drawing Bubble { get; set; }

		/// <summary>
		/// Gets or sets the value defining how the Label is aligned relative to its Bubble.
		/// </summary>
		/// <remarks>To hide the Label set this property to <see cref="BubbleLabelAlignment.DontShow"/> value.</remarks>
		BubbleLabelAlignment LabelAlignment { get; set; }

		/// <summary>
		/// Gets or sets the LabelFormat property.
		/// </summary>
		bool ScaleLabelToBubbleSize { get; set; }

		/// <summary>
		/// Gets or sets the LabelFormat property.
		/// </summary>
		/// <remarks>Standard format string.</remarks>
		string LabelFormat { get; set; }

		/// <summary>
		/// Gets or sets the LabelBrush property.
		/// </summary>
		Brush LabelBrush { get; set; }
		/// <summary>
		/// Gets or sets the FontFamily property.
		/// </summary>
		/// <remarks>Used to draw bubble labels.</remarks>
		FontFamily FontFamily { get; set; }

		/// <summary>
		/// Gets or sets the FontSize property.
		/// </summary>
		/// <remarks>Used to draw bubble labels.</remarks>
		double FontSize { get; set; }

		/// <summary>
		/// Gets or sets the FontStretch property.
		/// </summary>
		/// <remarks>Used to draw bubble labels.</remarks>
		FontStretch FontStretch { get; set; }

		/// <summary>
		/// Gets or sets the FontStyle property.
		/// </summary>
		/// <remarks>Used to draw bubble labels.</remarks>
		FontStyle FontStyle { get; set; }

		/// <summary>
		/// Gets or sets the FontWeight property.
		/// </summary>
		/// <remarks>Used to draw bubble labels.</remarks>
		FontWeight FontWeight { get; set; }
	}
}
